/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package colloque.forms;


import colloque.HibernateUtil;
import colloque.MotCle;
import colloque.Utilisateur;
import colloque.helpers.UtilisateurHelper;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import org.hibernate.HibernateException;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.Transaction;

/**
 *
 * @author James
 */
public class UtilisateurForm {
    
    Session session = null;

    /**
     *
     */
    public UtilisateurForm() {
        this.session = HibernateUtil.getSessionFactory().getCurrentSession();
    }

    private Map<String, String> erreurs      = new HashMap<String, String>();

    /**
     *
     * @return
     */
    public Map<String, String> getErreurs() {
        return erreurs;
    }

    /**
     * Définit les compétences pour un Utilisateur
     * 
     * @param request
     */
    public void setCompetences(HttpServletRequest request) {
        /* Récupération des champs du formulaire */
        Transaction tx = null;
        try {
            tx = session.beginTransaction();
            Set<MotCle> motcles = new HashSet<MotCle>();
            if (!"".equals(request.getParameter("mc1"))) {
                motcles.add((MotCle) session.get(MotCle.class, Integer.parseInt(request.getParameter("mc1"))));
            }
            if (!"".equals(request.getParameter("mc2"))) {
                motcles.add((MotCle) session.get(MotCle.class, Integer.parseInt(request.getParameter("mc2"))));
            }
            if (!"".equals(request.getParameter("mc3"))) {
                motcles.add((MotCle) session.get(MotCle.class, Integer.parseInt(request.getParameter("mc3"))));
            }
            UtilisateurHelper utilisateurhelper = new UtilisateurHelper();
            Utilisateur utilisateur = utilisateurhelper.getUtilisateurCourant(request);
            utilisateur.setMotCles(motcles);
            String sql = "DELETE FROM EST_COMPETENT WHERE UTILISATEURID = "+ utilisateur.getUtilisateurid();
            SQLQuery query = session.createSQLQuery(sql);
            query.executeUpdate();
            session.save(utilisateur);
            tx.commit();
        } catch (HibernateException e) {
            if (tx != null) {
                tx.rollback();
            }
            e.printStackTrace();
        }
    }
    
    /*
     * Ajoute un message correspondant au champ spécifié à la map des erreurs.
     */
    private void setErreur( String champ, String message ) {
        erreurs.put( champ, message );
    }

    /*
     * Méthode utilitaire qui retourne null si un champ est vide, et son contenu
     * sinon.
     */
    private static String getValeurChamp( HttpServletRequest request, String nomChamp ) {
        String valeur = request.getParameter( nomChamp );
        if ( valeur == null || valeur.trim().length() == 0 ) {
            return null;
        } else {
            return valeur;
        }
    }
}

